﻿using Little.Soldier.SWIFT;
using Little.Soldier.SWIFT.Definition;
using System.Collections.Generic;
using System.ComponentModel;

namespace Little.Soldier.SWIFT.Messages.Category1
{
  public class MT103PLUS : SwiftMessage
  {
    private static SwiftMessageDefinition MessageDefinition;
    private static SwiftTagDefinition U0002;
    private static SwiftTagSubItemDefinition U0003;
    private static SwiftTagDefinition U0004;
    private static SwiftTagSubItemDefinition U0005;
    private static SwiftTagSubItemDefinition U0006;
    private static SwiftTagSubItemDefinition U0007;
    private static SwiftTagSubItemDefinition U0008;
    private static SwiftTagSubItemDefinition U000E;
    private static SwiftTagDefinition U000F;
    private static SwiftTagSubItemDefinition U0010;
    private static SwiftTagDefinition U0011;
    private static SwiftTagSubItemDefinition U0012;
    private static SwiftTagSubItemDefinition U0013;
    private static SwiftTagSubItemDefinition U0014;
    private static SwiftTagDefinition U0015;
    private static SwiftTagSubItemDefinition U0016;
    private static SwiftTagDefinition U0017;
    private static SwiftTagSubItemDefinition U0018;
    private static SwiftTagSubItemDefinition U0019;
    private static SwiftTagSubItemDefinition U001A;
    private static SwiftTagDefinition U001B;
    private static SwiftTagSubItemDefinition U001C;
    private static SwiftTagSubItemDefinition U001D;
    private static SwiftTagDefinition U001E;
    private static SwiftTagSubItemDefinition U001F;
    private static SwiftTagChoiceDefinition U007F;
    private static SwiftTagDefinition U0080;
    private static SwiftTagSubItemDefinition U0081;
    private static SwiftTagSubItemDefinition U0082;
    private static SwiftTagDefinition U0083;
    private static SwiftTagSubItemDefinition U0084;
    private static SwiftTagSubItemDefinition U0086;
    private static SwiftTagSubItemDefinition U0087;
    private static SwiftTagSubItemDefinition U0088;
    private static SwiftTagSubItemDefinition U0089;
    private static SwiftTagSubItemDefinition U008A;
    private static SwiftTagSubItemDefinition U008B;
    private static SwiftTagDefinition U008C;
    private static SwiftTagSubItemDefinition U008D;
    private static SwiftTagSubItemDefinition U008E;
    private static SwiftTagDefinition U008F;
    private static SwiftTagSubItemDefinition U0090;
    private static SwiftTagSubItemDefinition U0091;
    private static SwiftTagChoiceDefinition U0092;
    private static SwiftTagDefinition U0093;
    private static SwiftTagSubItemDefinition U0094;
    private static SwiftTagSubItemDefinition U0095;
    private static SwiftTagDefinition U0096;
    private static SwiftTagSubItemDefinition U0097;
    private static SwiftTagSubItemDefinition U0098;
    private static SwiftTagDefinition U0099;
    private static SwiftTagSubItemDefinition U009A;
    private static SwiftTagSubItemDefinition U009B;
    private static SwiftTagDefinition U009C;
    private static SwiftTagSubItemDefinition U009D;
    private static SwiftTagSubItemDefinition U009E;
    private static SwiftTagDefinition U009F;
    private static SwiftTagSubItemDefinition U0001U0002;
    private static SwiftTagSubItemDefinition U0002U0002;
    private static SwiftTagDefinition U0003U0002;
    private static SwiftTagSubItemDefinition U0004U0002;
    private static SwiftTagSubItemDefinition U0005U0002;
    private static SwiftTagChoiceDefinition U0006U0002;
    private static SwiftTagDefinition U0007U0002;
    private static SwiftTagSubItemDefinition U0008U0002;
    private static SwiftTagSubItemDefinition U000EU0002;
    private static SwiftTagDefinition U000FU0002;
    private static SwiftTagSubItemDefinition U0010U0002;
    private static SwiftTagSubItemDefinition U0011U0002;
    private static SwiftTagDefinition U0012U0002;
    private static SwiftTagDefinition U0013U0002;
    private static SwiftTagSubItemDefinition U0014U0002;
    private static SwiftTagDefinition U0015U0002;
    private static SwiftTagSubItemDefinition U0016U0002;
    private static SwiftTagSubItemDefinition U0017U0002;
    private static SwiftTagDefinition U0018U0002;
    private static SwiftTagSubItemDefinition U0019U0002;
    private static SwiftTagSubItemDefinition U001AU0002;
    private static SwiftTagDefinition U001BU0002;
    private static SwiftTagSubItemDefinition U001CU0002;
    private static SwiftTagSubItemDefinition U001DU0002;
    private static SwiftTagSubItemDefinition U001EU0002;
    private static SwiftTagSubItemDefinition U001FU0002;
    private static SwiftTagSubItemDefinition U007FU0002;
    private static SwiftTagSubItemDefinition U0080U0002;
    private static SwiftTagDefinition U0081U0002;

    [Description("Sender’s Reference")]
    public Tag20 SendersReference_20
    {
      get
      {
        return new Tag20((SwiftElement) this, 0, (SwiftDefinitionElement) MT103PLUS.U0002);
      }
    }

    [Description("Sender’s Reference")]
    public Tag20 Tag20_SendersReference
    {
      get
      {
        return this.SendersReference_20;
      }
    }

    [Description("Time Indication")]
    public MT103PLUS.Tag13C[] TimeIndication_13C
    {
      get
      {
        int index = -1;
        List<MT103PLUS.Tag13C> list = new List<MT103PLUS.Tag13C>();
        int count;
        do
        {
          ++index;
          MT103PLUS.Tag13C tag13C = new MT103PLUS.Tag13C((SwiftElement) this, index, (SwiftDefinitionElement) MT103PLUS.U0004);
          count = this.ListTags((SwiftElement) tag13C).Count;
          if (count > 0)
            list.Add(tag13C);
        }
        while (count > 0);
        return list.ToArray();
      }
    }

    [Description("Time Indication")]
    public MT103PLUS.Tag13C[] Tag13C_TimeIndication
    {
      get
      {
        return this.TimeIndication_13C;
      }
    }

    [Description("Bank Operation Code")]
    public Tag23B BankOperationCode_23B
    {
      get
      {
        return new Tag23B((SwiftElement) this, 0, (SwiftDefinitionElement) MT103PLUS.U000F);
      }
    }

    [Description("Bank Operation Code")]
    public Tag23B Tag23B_BankOperationCode
    {
      get
      {
        return this.BankOperationCode_23B;
      }
    }

    [Description("Instruction Code")]
    public MT103PLUS.Tag23E[] InstructionCode_23E
    {
      get
      {
        int index = -1;
        List<MT103PLUS.Tag23E> list = new List<MT103PLUS.Tag23E>();
        int count;
        do
        {
          ++index;
          MT103PLUS.Tag23E tag23E = new MT103PLUS.Tag23E((SwiftElement) this, index, (SwiftDefinitionElement) MT103PLUS.U0011);
          count = this.ListTags((SwiftElement) tag23E).Count;
          if (count > 0)
            list.Add(tag23E);
        }
        while (count > 0);
        return list.ToArray();
      }
    }

    [Description("Instruction Code")]
    public MT103PLUS.Tag23E[] Tag23E_InstructionCode
    {
      get
      {
        return this.InstructionCode_23E;
      }
    }

    [Description("Transaction Type Code")]
    public Tag26T TransactionTypeCode_26T
    {
      get
      {
        return new Tag26T((SwiftElement) this, 0, (SwiftDefinitionElement) MT103PLUS.U0015);
      }
    }

    [Description("Transaction Type Code")]
    public Tag26T Tag26T_TransactionTypeCode
    {
      get
      {
        return this.TransactionTypeCode_26T;
      }
    }

    [Description("Value Date/Currency/Interbank Settled Amount")]
    public Tag32A ValueDateCurrencyInterbankSettledAmount_32A
    {
      get
      {
        return new Tag32A((SwiftElement) this, 0, (SwiftDefinitionElement) MT103PLUS.U0017);
      }
    }

    [Description("Value Date/Currency/Interbank Settled Amount")]
    public Tag32A Tag32A_ValueDateCurrencyInterbankSettledAmount
    {
      get
      {
        return this.ValueDateCurrencyInterbankSettledAmount_32A;
      }
    }

    [Description("Currency/Instructed Amount")]
    public Tag33B CurrencyInstructedAmount_33B
    {
      get
      {
        return new Tag33B((SwiftElement) this, 0, (SwiftDefinitionElement) MT103PLUS.U001B);
      }
    }

    [Description("Currency/Instructed Amount")]
    public Tag33B Tag33B_CurrencyInstructedAmount
    {
      get
      {
        return this.CurrencyInstructedAmount_33B;
      }
    }

    [Description("Exchange Rate")]
    public Tag36 ExchangeRate_36
    {
      get
      {
        return new Tag36((SwiftElement) this, 0, (SwiftDefinitionElement) MT103PLUS.U001E);
      }
    }

    [Description("Exchange Rate")]
    public Tag36 Tag36_ExchangeRate
    {
      get
      {
        return this.ExchangeRate_36;
      }
    }

    [Description("Ordering Customer")]
    public MT103PLUS.Tag50A OrderingCustomer_50A
    {
      get
      {
        return new MT103PLUS.Tag50A((SwiftElement) this, 0, (SwiftDefinitionElement) MT103PLUS.U0080);
      }
    }

    [Description("Ordering Customer")]
    public MT103PLUS.Tag50A Tag50A_OrderingCustomer
    {
      get
      {
        return this.OrderingCustomer_50A;
      }
    }

    [Description("Ordering Customer")]
    public Tag50F OrderingCustomer_50F
    {
      get
      {
        return new Tag50F((SwiftElement) this, 0, (SwiftDefinitionElement) MT103PLUS.U0083);
      }
    }

    [Description("Ordering Customer")]
    public Tag50F Tag50F_OrderingCustomer
    {
      get
      {
        return this.OrderingCustomer_50F;
      }
    }

    [Description("Ordering Customer")]
    public MT103PLUS.Tag50K OrderingCustomer_50K
    {
      get
      {
        return new MT103PLUS.Tag50K((SwiftElement) this, 0, (SwiftDefinitionElement) MT103PLUS.U008C);
      }
    }

    [Description("Ordering Customer")]
    public MT103PLUS.Tag50K Tag50K_OrderingCustomer
    {
      get
      {
        return this.OrderingCustomer_50K;
      }
    }

    [Description("Ordering Institution")]
    public MT103PLUS.Tag52A OrderingInstitution_52A
    {
      get
      {
        return new MT103PLUS.Tag52A((SwiftElement) this, 0, (SwiftDefinitionElement) MT103PLUS.U008F);
      }
    }

    [Description("Ordering Institution")]
    public MT103PLUS.Tag52A Tag52A_OrderingInstitution
    {
      get
      {
        return this.OrderingInstitution_52A;
      }
    }

    [Description("Sender’s Correspondent")]
    public MT103PLUS.Tag53A SendersCorrespondent_53A
    {
      get
      {
        return new MT103PLUS.Tag53A((SwiftElement) this, 0, (SwiftDefinitionElement) MT103PLUS.U0093);
      }
    }

    [Description("Sender’s Correspondent")]
    public MT103PLUS.Tag53A Tag53A_SendersCorrespondent
    {
      get
      {
        return this.SendersCorrespondent_53A;
      }
    }

    [Description("Sender’s Correspondent")]
    public MT103PLUS.Tag53B SendersCorrespondent_53B
    {
      get
      {
        return new MT103PLUS.Tag53B((SwiftElement) this, 0, (SwiftDefinitionElement) MT103PLUS.U0096);
      }
    }

    [Description("Sender’s Correspondent")]
    public MT103PLUS.Tag53B Tag53B_SendersCorrespondent
    {
      get
      {
        return this.SendersCorrespondent_53B;
      }
    }

    [Description("Receiver’s Correspondent")]
    public MT103PLUS.Tag54A ReceiversCorrespondent_54A
    {
      get
      {
        return new MT103PLUS.Tag54A((SwiftElement) this, 0, (SwiftDefinitionElement) MT103PLUS.U0099);
      }
    }

    [Description("Receiver’s Correspondent")]
    public MT103PLUS.Tag54A Tag54A_ReceiversCorrespondent
    {
      get
      {
        return this.ReceiversCorrespondent_54A;
      }
    }

    [Description("Third Reimbursement Institution")]
    public Tag55A ThirdReimbursementInstitution_55A
    {
      get
      {
        return new Tag55A((SwiftElement) this, 0, (SwiftDefinitionElement) MT103PLUS.U009C);
      }
    }

    [Description("Third Reimbursement Institution")]
    public Tag55A Tag55A_ThirdReimbursementInstitution
    {
      get
      {
        return this.ThirdReimbursementInstitution_55A;
      }
    }

    [Description("Intermediary Institution")]
    public Tag56A IntermediaryInstitution_56A
    {
      get
      {
        return new Tag56A((SwiftElement) this, 0, (SwiftDefinitionElement) MT103PLUS.U009F);
      }
    }

    [Description("Intermediary Institution")]
    public Tag56A Tag56A_IntermediaryInstitution
    {
      get
      {
        return this.IntermediaryInstitution_56A;
      }
    }

    [Description("Account With Institution")]
    public MT103PLUS.Tag57A AccountWithInstitution_57A
    {
      get
      {
        return new MT103PLUS.Tag57A((SwiftElement) this, 0, (SwiftDefinitionElement) MT103PLUS.U0003U0002);
      }
    }

    [Description("Account With Institution")]
    public MT103PLUS.Tag57A Tag57A_AccountWithInstitution
    {
      get
      {
        return this.AccountWithInstitution_57A;
      }
    }

    [Description("Beneficiary Customer")]
    public MT103PLUS.Tag59A BeneficiaryCustomer_59A
    {
      get
      {
        return new MT103PLUS.Tag59A((SwiftElement) this, 0, (SwiftDefinitionElement) MT103PLUS.U0007U0002);
      }
    }

    [Description("Beneficiary Customer")]
    public MT103PLUS.Tag59A Tag59A_BeneficiaryCustomer
    {
      get
      {
        return this.BeneficiaryCustomer_59A;
      }
    }

    [Description("Beneficiary Customer")]
    public MT103PLUS.Tag59 BeneficiaryCustomer_59
    {
      get
      {
        return new MT103PLUS.Tag59((SwiftElement) this, 0, (SwiftDefinitionElement) MT103PLUS.U000FU0002);
      }
    }

    [Description("Beneficiary Customer")]
    public MT103PLUS.Tag59 Tag59_BeneficiaryCustomer
    {
      get
      {
        return this.BeneficiaryCustomer_59;
      }
    }

    [Description("Remittance Information")]
    public Tag70 RemittanceInformation_70
    {
      get
      {
        return new Tag70((SwiftElement) this, 0, (SwiftDefinitionElement) MT103PLUS.U0012U0002);
      }
    }

    [Description("Remittance Information")]
    public Tag70 Tag70_RemittanceInformation
    {
      get
      {
        return this.RemittanceInformation_70;
      }
    }

    [Description("Details of Charges")]
    public Tag71A DetailsOfCharges_71A
    {
      get
      {
        return new Tag71A((SwiftElement) this, 0, (SwiftDefinitionElement) MT103PLUS.U0013U0002);
      }
    }

    [Description("Details of Charges")]
    public Tag71A Tag71A_DetailsOfCharges
    {
      get
      {
        return this.DetailsOfCharges_71A;
      }
    }

    [Description("Sender’s Charges")]
    public Tag71F[] SendersCharges_71F
    {
      get
      {
        int index = -1;
        List<Tag71F> list = new List<Tag71F>();
        int count;
        do
        {
          ++index;
          Tag71F tag71F = new Tag71F((SwiftElement) this, index, (SwiftDefinitionElement) MT103PLUS.U0015U0002);
          count = this.ListTags((SwiftElement) tag71F).Count;
          if (count > 0)
            list.Add(tag71F);
        }
        while (count > 0);
        return list.ToArray();
      }
    }

    [Description("Sender’s Charges")]
    public Tag71F[] Tag71F_SendersCharges
    {
      get
      {
        return this.SendersCharges_71F;
      }
    }

    [Description("Receiver’s Charges")]
    public Tag71G ReceiversCharges_71G
    {
      get
      {
        return new Tag71G((SwiftElement) this, 0, (SwiftDefinitionElement) MT103PLUS.U0018U0002);
      }
    }

    [Description("Receiver’s Charges")]
    public Tag71G Tag71G_ReceiversCharges
    {
      get
      {
        return this.ReceiversCharges_71G;
      }
    }

    [Description("Sender to Receiver Information")]
    public Tag72 SenderToReceiverInformation_72
    {
      get
      {
        return new Tag72((SwiftElement) this, 0, (SwiftDefinitionElement) MT103PLUS.U001BU0002);
      }
    }

    [Description("Sender to Receiver Information")]
    public Tag72 Tag72_SenderToReceiverInformation
    {
      get
      {
        return this.SenderToReceiverInformation_72;
      }
    }

    [Description("Regulatory Reporting")]
    public Tag77B RegulatoryReporting_77B
    {
      get
      {
        return new Tag77B((SwiftElement) this, 0, (SwiftDefinitionElement) MT103PLUS.U0081U0002);
      }
    }

    [Description("Regulatory Reporting")]
    public Tag77B Tag77B_RegulatoryReporting
    {
      get
      {
        return this.RegulatoryReporting_77B;
      }
    }

    public MT103PLUS()
      : base(true)
    {
    }

    public MT103PLUS(SwiftMessage message)
      : base(message)
    {
    }

    public MT103PLUS.Tag13C AddTimeIndication_13C()
    {
      return new MT103PLUS.Tag13C((SwiftElement) this, this.TimeIndication_13C.Length, (SwiftDefinitionElement) MT103PLUS.U0004)
      {
        Value = string.Empty
      };
    }

    public void RemoveTimeIndication_13C(MT103PLUS.Tag13C tag)
    {
      this.RemoveTag(tag.GetTag());
    }

    public MT103PLUS.Tag23E AddInstructionCode_23E()
    {
      return new MT103PLUS.Tag23E((SwiftElement) this, this.InstructionCode_23E.Length, (SwiftDefinitionElement) MT103PLUS.U0011)
      {
        Value = string.Empty
      };
    }

    public void RemoveInstructionCode_23E(MT103PLUS.Tag23E tag)
    {
      this.RemoveTag(tag.GetTag());
    }

    public Tag71F AddSendersCharges_71F()
    {
      return new Tag71F((SwiftElement) this, this.SendersCharges_71F.Length, (SwiftDefinitionElement) MT103PLUS.U0015U0002)
      {
        Value = string.Empty
      };
    }

    public void RemoveSendersCharges_71F(Tag71F tag)
    {
      this.RemoveTag(tag.GetTag());
    }

    internal override SwiftMessageDefinition MsgDefinition()
    {
      return MT103PLUS.MessageDefinition;
    }

    protected override void InitSwiftMessageDefinition()
    {
      MT103PLUS.MessageDefinition = new SwiftMessageDefinition("MT103PLUS", "Single Customer Credit Transfer");
      MT103PLUS.U0002 = new SwiftTagDefinition("SendersReference_20", "Sender’s Reference");
      MT103PLUS.U0002.TagName = ":20:";
      MT103PLUS.U0003 = new SwiftTagSubItemDefinition("Reference", "Reference");
      MT103PLUS.U0002.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0003);
      MT103PLUS.MessageDefinition.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0002);
      MT103PLUS.U0004 = new SwiftTagDefinition("TimeIndication_13C", "Time Indication");
      MT103PLUS.U0004.TagName = ":13C:/";
      MT103PLUS.U0004.Mandatory = false;
      MT103PLUS.U0004.Multiple = true;
      MT103PLUS.U0005 = new SwiftTagSubItemDefinition("Code", "Code");
      MT103PLUS.U0004.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0005);
      MT103PLUS.U0006 = new SwiftTagSubItemDefinition("TimeIndicationSignTimeOffset", "(Time indication)(Sign)(Time offset)");
      MT103PLUS.U0007 = new SwiftTagSubItemDefinition("TimeIndication", "Time Indication");
      MT103PLUS.U0006.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0007);
      MT103PLUS.U0008 = new SwiftTagSubItemDefinition("Sign", "Sign");
      MT103PLUS.U0006.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0008);
      MT103PLUS.U000E = new SwiftTagSubItemDefinition("TimeOffset", "Time Offset");
      MT103PLUS.U0006.Elements.Add((SwiftDefinitionElement) MT103PLUS.U000E);
      MT103PLUS.U0004.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0006);
      MT103PLUS.MessageDefinition.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0004);
      MT103PLUS.U000F = new SwiftTagDefinition("BankOperationCode_23B", "Bank Operation Code");
      MT103PLUS.U000F.TagName = ":23B:";
      MT103PLUS.U0010 = new SwiftTagSubItemDefinition("Type", "Type");
      MT103PLUS.U000F.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0010);
      MT103PLUS.MessageDefinition.Elements.Add((SwiftDefinitionElement) MT103PLUS.U000F);
      MT103PLUS.U0011 = new SwiftTagDefinition("InstructionCode_23E", "Instruction Code");
      MT103PLUS.U0011.TagName = ":23E:";
      MT103PLUS.U0011.Mandatory = false;
      MT103PLUS.U0011.Multiple = true;
      MT103PLUS.U0012 = new SwiftTagSubItemDefinition("Instruction", "Instruction");
      MT103PLUS.U0011.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0012);
      MT103PLUS.U0013 = new SwiftTagSubItemDefinition("InstructionCode", "Additional Information");
      MT103PLUS.U0013.Mandatory = false;
      MT103PLUS.U0014 = new SwiftTagSubItemDefinition("AdditionalInformation", "Additional Information");
      MT103PLUS.U0013.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0014);
      MT103PLUS.U0011.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0013);
      MT103PLUS.MessageDefinition.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0011);
      MT103PLUS.U0015 = new SwiftTagDefinition("TransactionTypeCode_26T", "Transaction Type Code");
      MT103PLUS.U0015.TagName = ":26T:";
      MT103PLUS.U0015.Mandatory = false;
      MT103PLUS.U0016 = new SwiftTagSubItemDefinition("Type", "Type");
      MT103PLUS.U0015.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0016);
      MT103PLUS.MessageDefinition.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0015);
      MT103PLUS.U0017 = new SwiftTagDefinition("ValueDateCurrencyInterbankSettledAmount_32A", "Value Date/Currency/Interbank Settled Amount");
      MT103PLUS.U0017.TagName = ":32A:";
      MT103PLUS.U0018 = new SwiftTagSubItemDefinition("Date", "Date");
      MT103PLUS.U0017.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0018);
      MT103PLUS.U0019 = new SwiftTagSubItemDefinition("Currency", "Currency");
      MT103PLUS.U0017.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0019);
      MT103PLUS.U001A = new SwiftTagSubItemDefinition("Amount", "Amount");
      MT103PLUS.U0017.Elements.Add((SwiftDefinitionElement) MT103PLUS.U001A);
      MT103PLUS.MessageDefinition.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0017);
      MT103PLUS.U001B = new SwiftTagDefinition("CurrencyInstructedAmount_33B", "Currency/Instructed Amount");
      MT103PLUS.U001B.TagName = ":33B:";
      MT103PLUS.U001B.Mandatory = false;
      MT103PLUS.U001C = new SwiftTagSubItemDefinition("Currency", "Currency");
      MT103PLUS.U001B.Elements.Add((SwiftDefinitionElement) MT103PLUS.U001C);
      MT103PLUS.U001D = new SwiftTagSubItemDefinition("Amount", "Amount");
      MT103PLUS.U001B.Elements.Add((SwiftDefinitionElement) MT103PLUS.U001D);
      MT103PLUS.MessageDefinition.Elements.Add((SwiftDefinitionElement) MT103PLUS.U001B);
      MT103PLUS.U001E = new SwiftTagDefinition("ExchangeRate_36", "Exchange Rate");
      MT103PLUS.U001E.TagName = ":36:";
      MT103PLUS.U001E.Mandatory = false;
      MT103PLUS.U001F = new SwiftTagSubItemDefinition("Rate", "Rate");
      MT103PLUS.U001E.Elements.Add((SwiftDefinitionElement) MT103PLUS.U001F);
      MT103PLUS.MessageDefinition.Elements.Add((SwiftDefinitionElement) MT103PLUS.U001E);
      MT103PLUS.U007F = new SwiftTagChoiceDefinition("Choice", "");
      MT103PLUS.U007F.Multiple = true;
      MT103PLUS.U0080 = new SwiftTagDefinition("OrderingCustomer_50A", "Ordering Customer");
      MT103PLUS.U0080.TagName = ":50A:";
      MT103PLUS.U0081 = new SwiftTagSubItemDefinition("Account", "Account");
      MT103PLUS.U0081.Mandatory = false;
      MT103PLUS.U0080.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0081);
      MT103PLUS.U0082 = new SwiftTagSubItemDefinition("BankIdentifierCode", "Bank Identifier Code");
      MT103PLUS.U0080.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0082);
      MT103PLUS.U007F.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0080);
      MT103PLUS.U0083 = new SwiftTagDefinition("OrderingCustomer_50F", "Ordering Customer");
      MT103PLUS.U0083.TagName = ":50F";
      MT103PLUS.U0084 = new SwiftTagSubItemDefinition("OrderingCustomerIdentification_1", "Account");
      MT103PLUS.U0086 = new SwiftTagSubItemDefinition("Account", "");
      MT103PLUS.U0084.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0086);
      MT103PLUS.U0083.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0084);
      MT103PLUS.U0087 = new SwiftTagSubItemDefinition("OrderingCustomerIdentification_2", "Ordering Customer Identification");
      MT103PLUS.U0088 = new SwiftTagSubItemDefinition("TypeOfIdentification", "Type Of Identification");
      MT103PLUS.U0087.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0088);
      MT103PLUS.U0089 = new SwiftTagSubItemDefinition("CountryCode", "Country Code");
      MT103PLUS.U0087.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0089);
      MT103PLUS.U008A = new SwiftTagSubItemDefinition("Identification", "Identification");
      MT103PLUS.U0087.Elements.Add((SwiftDefinitionElement) MT103PLUS.U008A);
      MT103PLUS.U0083.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0087);
      MT103PLUS.U008B = new SwiftTagSubItemDefinition("NameAndAddress", "Name And Address");
      MT103PLUS.U0083.Elements.Add((SwiftDefinitionElement) MT103PLUS.U008B);
      MT103PLUS.U007F.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0083);
      MT103PLUS.U008C = new SwiftTagDefinition("OrderingCustomer_50K", "Ordering Customer");
      MT103PLUS.U008C.TagName = ":50K:";
      MT103PLUS.U008D = new SwiftTagSubItemDefinition("Account", "Account");
      MT103PLUS.U008D.Mandatory = false;
      MT103PLUS.U008C.Elements.Add((SwiftDefinitionElement) MT103PLUS.U008D);
      MT103PLUS.U008E = new SwiftTagSubItemDefinition("NameAndAddress", "Name And Address");
      MT103PLUS.U008C.Elements.Add((SwiftDefinitionElement) MT103PLUS.U008E);
      MT103PLUS.U007F.Elements.Add((SwiftDefinitionElement) MT103PLUS.U008C);
      MT103PLUS.MessageDefinition.Elements.Add((SwiftDefinitionElement) MT103PLUS.U007F);
      MT103PLUS.U008F = new SwiftTagDefinition("OrderingInstitution_52A", "Ordering Institution");
      MT103PLUS.U008F.TagName = ":52A:";
      MT103PLUS.U008F.Mandatory = false;
      MT103PLUS.U0090 = new SwiftTagSubItemDefinition("PartyIdentifier", "Party Identifier");
      MT103PLUS.U0090.Mandatory = false;
      MT103PLUS.U008F.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0090);
      MT103PLUS.U0091 = new SwiftTagSubItemDefinition("BankIdentifierCode", "Bank Identifier Code");
      MT103PLUS.U008F.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0091);
      MT103PLUS.MessageDefinition.Elements.Add((SwiftDefinitionElement) MT103PLUS.U008F);
      MT103PLUS.U0092 = new SwiftTagChoiceDefinition("Choice", "");
      MT103PLUS.U0092.Mandatory = false;
      MT103PLUS.U0092.Multiple = true;
      MT103PLUS.U0093 = new SwiftTagDefinition("SendersCorrespondent_53A", "Sender’s Correspondent");
      MT103PLUS.U0093.TagName = ":53A:";
      MT103PLUS.U0094 = new SwiftTagSubItemDefinition("PartyIdentifier", "Party Identifier");
      MT103PLUS.U0094.Mandatory = false;
      MT103PLUS.U0093.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0094);
      MT103PLUS.U0095 = new SwiftTagSubItemDefinition("BankIdentifierCode", "Bank Identifier Code");
      MT103PLUS.U0093.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0095);
      MT103PLUS.U0092.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0093);
      MT103PLUS.U0096 = new SwiftTagDefinition("SendersCorrespondent_53B", "Sender’s Correspondent");
      MT103PLUS.U0096.TagName = ":53B:";
      MT103PLUS.U0097 = new SwiftTagSubItemDefinition("PartyIdentifier", "Party Identifier");
      MT103PLUS.U0097.Mandatory = false;
      MT103PLUS.U0096.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0097);
      MT103PLUS.U0098 = new SwiftTagSubItemDefinition("Location", "Location");
      MT103PLUS.U0098.Mandatory = false;
      MT103PLUS.U0096.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0098);
      MT103PLUS.U0092.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0096);
      MT103PLUS.MessageDefinition.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0092);
      MT103PLUS.U0099 = new SwiftTagDefinition("ReceiversCorrespondent_54A", "Receiver’s Correspondent");
      MT103PLUS.U0099.TagName = ":54A:";
      MT103PLUS.U0099.Mandatory = false;
      MT103PLUS.U009A = new SwiftTagSubItemDefinition("PartyIdentifier", "Party Identifier");
      MT103PLUS.U009A.Mandatory = false;
      MT103PLUS.U0099.Elements.Add((SwiftDefinitionElement) MT103PLUS.U009A);
      MT103PLUS.U009B = new SwiftTagSubItemDefinition("BankIdentifierCode", "Bank Identifier Code");
      MT103PLUS.U0099.Elements.Add((SwiftDefinitionElement) MT103PLUS.U009B);
      MT103PLUS.MessageDefinition.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0099);
      MT103PLUS.U009C = new SwiftTagDefinition("ThirdReimbursementInstitution_55A", "Third Reimbursement Institution");
      MT103PLUS.U009C.TagName = ":55A:";
      MT103PLUS.U009C.Mandatory = false;
      MT103PLUS.U009D = new SwiftTagSubItemDefinition("PartyIdentifier", "Party Identifier");
      MT103PLUS.U009D.Mandatory = false;
      MT103PLUS.U009C.Elements.Add((SwiftDefinitionElement) MT103PLUS.U009D);
      MT103PLUS.U009E = new SwiftTagSubItemDefinition("BankIdentifierCode", "Bank Identifier Code");
      MT103PLUS.U009C.Elements.Add((SwiftDefinitionElement) MT103PLUS.U009E);
      MT103PLUS.MessageDefinition.Elements.Add((SwiftDefinitionElement) MT103PLUS.U009C);
      MT103PLUS.U009F = new SwiftTagDefinition("IntermediaryInstitution_56A", "Intermediary Institution");
      MT103PLUS.U009F.TagName = ":56A:";
      MT103PLUS.U009F.Mandatory = false;
      MT103PLUS.U0001U0002 = new SwiftTagSubItemDefinition("PartyIdentifier", "Party Identifier");
      MT103PLUS.U0001U0002.Mandatory = false;
      MT103PLUS.U009F.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0001U0002);
      MT103PLUS.U0002U0002 = new SwiftTagSubItemDefinition("BankIdentifierCode", "Bank Identifier Code");
      MT103PLUS.U009F.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0002U0002);
      MT103PLUS.MessageDefinition.Elements.Add((SwiftDefinitionElement) MT103PLUS.U009F);
      MT103PLUS.U0003U0002 = new SwiftTagDefinition("AccountWithInstitution_57A", "Account With Institution");
      MT103PLUS.U0003U0002.TagName = ":57A:";
      MT103PLUS.U0003U0002.Mandatory = false;
      MT103PLUS.U0004U0002 = new SwiftTagSubItemDefinition("PartyIdentifier", "Party Identifier");
      MT103PLUS.U0004U0002.Mandatory = false;
      MT103PLUS.U0003U0002.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0004U0002);
      MT103PLUS.U0005U0002 = new SwiftTagSubItemDefinition("BankIdentifierCode", "Bank Identifier Code");
      MT103PLUS.U0003U0002.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0005U0002);
      MT103PLUS.MessageDefinition.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0003U0002);
      MT103PLUS.U0006U0002 = new SwiftTagChoiceDefinition("Choice", "");
      MT103PLUS.U0006U0002.Multiple = true;
      MT103PLUS.U0007U0002 = new SwiftTagDefinition("BeneficiaryCustomer_59A", "Beneficiary Customer");
      MT103PLUS.U0007U0002.TagName = ":59A:";
      MT103PLUS.U0008U0002 = new SwiftTagSubItemDefinition("Account", "Account");
      MT103PLUS.U0008U0002.Mandatory = false;
      MT103PLUS.U0007U0002.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0008U0002);
      MT103PLUS.U000EU0002 = new SwiftTagSubItemDefinition("BankIdentifierCode", "Bank Identifier Code");
      MT103PLUS.U0007U0002.Elements.Add((SwiftDefinitionElement) MT103PLUS.U000EU0002);
      MT103PLUS.U0006U0002.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0007U0002);
      MT103PLUS.U000FU0002 = new SwiftTagDefinition("BeneficiaryCustomer_59", "Beneficiary Customer");
      MT103PLUS.U000FU0002.TagName = ":59:";
      MT103PLUS.U0010U0002 = new SwiftTagSubItemDefinition("Account", "Account");
      MT103PLUS.U0010U0002.Mandatory = false;
      MT103PLUS.U000FU0002.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0010U0002);
      MT103PLUS.U0011U0002 = new SwiftTagSubItemDefinition("NameAndAddress", "Name And Address");
      MT103PLUS.U000FU0002.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0011U0002);
      MT103PLUS.U0006U0002.Elements.Add((SwiftDefinitionElement) MT103PLUS.U000FU0002);
      MT103PLUS.MessageDefinition.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0006U0002);
      MT103PLUS.U0012U0002 = new SwiftTagDefinition("RemittanceInformation_70", "Remittance Information");
      MT103PLUS.U0012U0002.TagName = ":70:";
      MT103PLUS.U0012U0002.Mandatory = false;
      MT103PLUS.MessageDefinition.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0012U0002);
      MT103PLUS.U0013U0002 = new SwiftTagDefinition("DetailsOfCharges_71A", "Details of Charges");
      MT103PLUS.U0013U0002.TagName = ":71A:";
      MT103PLUS.U0014U0002 = new SwiftTagSubItemDefinition("Code", "Code");
      MT103PLUS.U0013U0002.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0014U0002);
      MT103PLUS.MessageDefinition.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0013U0002);
      MT103PLUS.U0015U0002 = new SwiftTagDefinition("SendersCharges_71F", "Sender’s Charges");
      MT103PLUS.U0015U0002.TagName = ":71F:";
      MT103PLUS.U0015U0002.Mandatory = false;
      MT103PLUS.U0015U0002.Multiple = true;
      MT103PLUS.U0016U0002 = new SwiftTagSubItemDefinition("Currency", "Currency");
      MT103PLUS.U0015U0002.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0016U0002);
      MT103PLUS.U0017U0002 = new SwiftTagSubItemDefinition("Amount", "Amount");
      MT103PLUS.U0015U0002.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0017U0002);
      MT103PLUS.MessageDefinition.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0015U0002);
      MT103PLUS.U0018U0002 = new SwiftTagDefinition("ReceiversCharges_71G", "Receiver’s Charges");
      MT103PLUS.U0018U0002.TagName = ":71G:";
      MT103PLUS.U0018U0002.Mandatory = false;
      MT103PLUS.U0019U0002 = new SwiftTagSubItemDefinition("Currency", "Currency");
      MT103PLUS.U0018U0002.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0019U0002);
      MT103PLUS.U001AU0002 = new SwiftTagSubItemDefinition("Amount", "Amount");
      MT103PLUS.U0018U0002.Elements.Add((SwiftDefinitionElement) MT103PLUS.U001AU0002);
      MT103PLUS.MessageDefinition.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0018U0002);
      MT103PLUS.U001BU0002 = new SwiftTagDefinition("SenderToReceiverInformation_72", "Sender to Receiver Information");
      MT103PLUS.U001BU0002.TagName = ":72:";
      MT103PLUS.U001BU0002.Mandatory = false;
      MT103PLUS.U001CU0002 = new SwiftTagSubItemDefinition("Line1", "Line with a maximum of 35 SWIFT characters having format as /8c/[25x]");
      MT103PLUS.U001BU0002.Elements.Add((SwiftDefinitionElement) MT103PLUS.U001CU0002);
      MT103PLUS.U001DU0002 = new SwiftTagSubItemDefinition("Line2", "Line with a maximum of 35 SWIFT characters having format as /8c/[25x] or [//33x]");
      MT103PLUS.U001DU0002.Mandatory = false;
      MT103PLUS.U001BU0002.Elements.Add((SwiftDefinitionElement) MT103PLUS.U001DU0002);
      MT103PLUS.U001EU0002 = new SwiftTagSubItemDefinition("Line3", "Line with a maximum of 35 SWIFT characters having format as /8c/[25x] or [//33x]");
      MT103PLUS.U001EU0002.Mandatory = false;
      MT103PLUS.U001BU0002.Elements.Add((SwiftDefinitionElement) MT103PLUS.U001EU0002);
      MT103PLUS.U001FU0002 = new SwiftTagSubItemDefinition("Line4", "Line with a maximum of 35 SWIFT characters having format as /8c/[25x] or [//33x]");
      MT103PLUS.U001FU0002.Mandatory = false;
      MT103PLUS.U001BU0002.Elements.Add((SwiftDefinitionElement) MT103PLUS.U001FU0002);
      MT103PLUS.U007FU0002 = new SwiftTagSubItemDefinition("Line5", "Line with a maximum of 35 SWIFT characters having format as /8c/[25x] or [//33x]");
      MT103PLUS.U007FU0002.Mandatory = false;
      MT103PLUS.U001BU0002.Elements.Add((SwiftDefinitionElement) MT103PLUS.U007FU0002);
      MT103PLUS.U0080U0002 = new SwiftTagSubItemDefinition("Line6", "Line with a maximum of 35 SWIFT characters having format as /8c/[25x] or [//33x]");
      MT103PLUS.U0080U0002.Mandatory = false;
      MT103PLUS.U001BU0002.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0080U0002);
      MT103PLUS.MessageDefinition.Elements.Add((SwiftDefinitionElement) MT103PLUS.U001BU0002);
      MT103PLUS.U0081U0002 = new SwiftTagDefinition("RegulatoryReporting_77B", "Regulatory Reporting");
      MT103PLUS.U0081U0002.TagName = ":77B:";
      MT103PLUS.U0081U0002.Mandatory = false;
      MT103PLUS.MessageDefinition.Elements.Add((SwiftDefinitionElement) MT103PLUS.U0081U0002);
    }

    public class Tag13C : SwiftTagWrapper
    {
      public string Value
      {
        get
        {
          return this.GetValue();
        }
        set
        {
          this.SetValue("13C", value);
        }
      }

      internal Tag13C(SwiftElement parent, int index, SwiftDefinitionElement definition)
        : base(parent, index, definition)
      {
      }
    }

    public class Tag23E : SwiftTagWrapper
    {
      public string Value
      {
        get
        {
          return this.GetValue();
        }
        set
        {
          this.SetValue("23E", value);
        }
      }

      internal Tag23E(SwiftElement parent, int index, SwiftDefinitionElement definition)
        : base(parent, index, definition)
      {
      }
    }

    public class Tag50A : SwiftTagWrapper
    {
      public string Value
      {
        get
        {
          return this.GetValue();
        }
        set
        {
          this.SetValue("50A", value);
        }
      }

      internal Tag50A(SwiftElement parent, int index, SwiftDefinitionElement definition)
        : base(parent, index, definition)
      {
      }
    }

    public class Tag50K : SwiftTagWrapper
    {
      public string Value
      {
        get
        {
          return this.GetValue();
        }
        set
        {
          this.SetValue("50K", value);
        }
      }

      internal Tag50K(SwiftElement parent, int index, SwiftDefinitionElement definition)
        : base(parent, index, definition)
      {
      }
    }

    public class Tag52A : SwiftTagWrapper
    {
      public string Value
      {
        get
        {
          return this.GetValue();
        }
        set
        {
          this.SetValue("52A", value);
        }
      }

      internal Tag52A(SwiftElement parent, int index, SwiftDefinitionElement definition)
        : base(parent, index, definition)
      {
      }
    }

    public class Tag53A : SwiftTagWrapper
    {
      public string Value
      {
        get
        {
          return this.GetValue();
        }
        set
        {
          this.SetValue("53A", value);
        }
      }

      internal Tag53A(SwiftElement parent, int index, SwiftDefinitionElement definition)
        : base(parent, index, definition)
      {
      }
    }

    public class Tag53B : SwiftTagWrapper
    {
      public string Value
      {
        get
        {
          return this.GetValue();
        }
        set
        {
          this.SetValue("53B", value);
        }
      }

      internal Tag53B(SwiftElement parent, int index, SwiftDefinitionElement definition)
        : base(parent, index, definition)
      {
      }
    }

    public class Tag54A : SwiftTagWrapper
    {
      public string Value
      {
        get
        {
          return this.GetValue();
        }
        set
        {
          this.SetValue("54A", value);
        }
      }

      internal Tag54A(SwiftElement parent, int index, SwiftDefinitionElement definition)
        : base(parent, index, definition)
      {
      }
    }

    public class Tag57A : SwiftTagWrapper
    {
      public string Value
      {
        get
        {
          return this.GetValue();
        }
        set
        {
          this.SetValue("57A", value);
        }
      }

      internal Tag57A(SwiftElement parent, int index, SwiftDefinitionElement definition)
        : base(parent, index, definition)
      {
      }
    }

    public class Tag59A : SwiftTagWrapper
    {
      public string Value
      {
        get
        {
          return this.GetValue();
        }
        set
        {
          this.SetValue("59A", value);
        }
      }

      internal Tag59A(SwiftElement parent, int index, SwiftDefinitionElement definition)
        : base(parent, index, definition)
      {
      }
    }

    public class Tag59 : SwiftTagWrapper
    {
      public string Value
      {
        get
        {
          return this.GetValue();
        }
        set
        {
          this.SetValue("59", value);
        }
      }

      internal Tag59(SwiftElement parent, int index, SwiftDefinitionElement definition)
        : base(parent, index, definition)
      {
      }
    }
  }
}
